/*
 * Respuesta.java
 *
 * Created on 15 de mayo de 2007, 11:13 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package InterfazBD;

import Beans.*;
import java.sql.*;
import java.util.*;

/**
 *
 * @author Marco
 */
public class Respuesta {
    
    private BeanRespuesta datosRespuesta;
    
    private LinkedList<ResuSet> respuestas;
    /** Creates a new instance of Respuesta */
    public Respuesta() {
    }

    /**
     * Getter for property datosRespuesta.
     * @return Value of property datosRespuesta.
     */
    public BeanRespuesta getDatosRespuesta() {
        return this.datosRespuesta;
    }

    /**
     * Setter for property datosRespuesta.
     * @param datosRespuesta New value of property datosRespuesta.
     */
    public void setDatosRespuesta(BeanRespuesta datosRespuesta) {
        this.datosRespuesta = datosRespuesta;
    }
    
    /**
     * Agrega una respuesta a un tema
     */
    public void agregarRespuesta() throws Exception
    {
        Conexion conexionBD = new Conexion();
        Connection conn = conexionBD.conectar();
        Statement stm = conn.createStatement();        
        stm.execute("INSERT INTO web.respuesta (idAlumno, idTema, respuesta, puntaje) values (" +            
            datosRespuesta.getIdAlumno()+ ", " +
            datosRespuesta.getIdTema() + ", " +
            "\'" + datosRespuesta.getRespuesta() + "\', " +
            datosRespuesta.getPuntaje()+")");
        stm.close();
        conexionBD.desconectar();
        System.out.println("acaaaaaaa2222");
    }
    
     /**Quita la respuesta de un alumno*/
    public void quitarRespuesta() throws Exception{        
        Conexion conexionBD = new Conexion();
        Connection conn = conexionBD.conectar();
        Statement stm = conn.createStatement();
        stm.execute("DELETE " +
                "FROM web.respuesta "+
                "WHERE idalumno = "+datosRespuesta.getIdAlumno() +" and " +
                      "idtema = "+datosRespuesta.getIdTema());
        stm.close();
        conexionBD.desconectar();        
    }
    
    /**Actualiza la respuesta del alumno*/
    public void actualizarTemaRespuesta(String Respuesta) throws Exception{        
        Conexion conexionBD = new Conexion();
        Connection conn = conexionBD.conectar();
        Statement stm = conn.createStatement();
        stm.execute("UPDATE web.respuesta " +
                "SET respuesta = \'"+Respuesta+"\' "+
                "WHERE idalumno = "+datosRespuesta.getIdAlumno() +" and " +
                      "idtema = "+datosRespuesta.getIdTema());
        stm.close();
        conexionBD.desconectar();
        this.datosRespuesta.setRespuesta("" + Respuesta);
    }
    
    /**Actualiza el puntaje de un tema para el alumno cuando este ha rendido y se autocorrige*/
    public void actualizarTemaPuntaje(double puntaje) throws Exception{        
        Conexion conexionBD = new Conexion();
        Connection conn = conexionBD.conectar();
        Statement stm = conn.createStatement();
        
        stm.execute("UPDATE web.respuesta " +
                    "SET puntaje = \'"+puntaje+"\' "+
                    "WHERE idalumno = "+datosRespuesta.getIdAlumno() +" and " +
                    "idtema = "+datosRespuesta.getIdTema());
        stm.close();
        
        conexionBD.desconectar();
        this.datosRespuesta.setPuntaje(puntaje);
    }    

    /**Obtiene las respuestas de los temas de un examen de un alumno*/
    public void traerRespuesTema(int idAlumno, int idExamen) throws Exception{
        Conexion conexionBD = new Conexion();               
        Connection conn = conexionBD.conectar();        
        Statement stm = conn.createStatement();               
        
        respuestas = new LinkedList();
        ResultSet resp = stm.executeQuery("SELECT res.idalumno,tem.idexamen,res.idtema,res.respuesta,res.puntaje as puntajea, " +
                                                 "tem.titulo,tem.enunciado,tem.puntaje as puntajet,tem.tipo " +
                                         "FROM web.respuesta as res inner join web.tema as tem on res.idtema = tem.idtema " +
                                         "WHERE res.idalumno = "+ idAlumno +"and tem.idexamen = "+idExamen + " "+                                                        
                                         "ORDER BY res.idtema");        
        
        int enumtem = 1;
        
        while(resp.next()){                        
            ResuSet obj = new ResuSet();
            
            obj.SetColumna6(resp.getInt("idalumno"));
            obj.SetColumna7(resp.getInt("idexamen"));
            obj.SetColumna8(resp.getInt("idtema"));
            obj.SetColumna1(resp.getString("respuesta"));
            obj.SetColumna2(""+resp.getDouble("puntajea"));
            obj.SetColumna3(resp.getString("titulo"));
            obj.SetColumna4(resp.getString("enunciado"));            
            obj.SetColumna9(resp.getInt("puntajet"));
            obj.SetColumna5(resp.getString("tipo"));            
            obj.SetColumna10(enumtem++);
            
            respuestas.add(obj);
        }
                
        stm.close();
        conexionBD.desconectar();
    }
    
     /**
     * Devuelve el linked list a control
     */
    public LinkedList<ResuSet> getRespuesTema() {
        return respuestas;
    }
}
